package com.lxh.lxhcrm.model.mappers.inSale;

import com.lxh.lxhcrm.model.pojos.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 开发团队 ：lxh
 * @author ：鞠玮
 * 开发时间 ：2020/1/9 11:28
 * 接口名称 ：ContractMapper
 * 接口描述 ：
 */
@Component
public interface ContractMapper {
    /**
     * 获取所有的合同
     * @param state 合同状态
     * @param search 搜索参数
     * @param searchBy 搜索条件
     * @return List<Contract>
     */
    List<Contract> findAllContract(@Param("state") Integer state,
                                   @Param("search") Object search,
                                   @Param("searchBy")String searchBy);

    /**
     * 获取最新的五条数据
     * @return List<Contract> 合同集合
     */
    List<Contract> findContractLast();

    /**
     * 根据合同id获取合同
     * @param contractId 合同id
     * @return Contract 合同对象
     */
    Contract findContractById(Integer contractId);

    /**
     * 根据合同id查询交付计划
     * @param contractId：合同id
     * @return List<DeliveryPlan>：交付计划集合
     */
    List<DeliveryPlan> findAllDeliveryByContractId(@Param("contractId") Integer contractId);

    /**
     * 根据合同id查询交付计录
     * @param contractId：合同id
     * @return List<DelRecord>：交付计录集合
     */
    List<DelRecord> findDelRecordByContractId(@Param("contractId") Integer contractId);

    /**
     * 根据合同id查询回款计划
     * @param contractId 合同id
     * @return  List<Returnmon> 回款计划列表
     */
    List<Returnmon> findAllReturnmonByContractId(@Param("contractId") Integer contractId);

    /**
     * 查询回款计划中未回款的且设置提醒
     * @return List<Returnmon>
     */
    List<Returnmon> findAllReturnmonNotReturn();

    /**
     * 根据合同id查询回款记录
     * @param contractId 合同id
     * @return  回款计划列表
     */
    List<ReturnRecord> findAllReturnRecordByContractId(@Param("contractId") Integer contractId);

    /**
     * 根据合同id查询合同开票记录
     * @param contractId 合同id
     * @return  开票记录列表
     */
    List<ConInvoiceRecord> findConInvoiceRecordByContractId(@Param("contractId") Integer contractId);
}
